﻿package mortal.game.scene3D.layer3D.utils
{
    import mortal.game.*;
    import mortal.game.model.*;
    import mortal.game.scene3D.layer3D.*;
    import mortal.game.scene3D.map3D.*;

    public class PixsMaskUtil extends EntityLayerUtil
    {
        private var _map:PixsMaskDictionary;

        public function PixsMaskUtil(param1:PlayerLayer)
        {
            this._map = new PixsMaskDictionary();
            super(param1);
            return;
        }// end function

        public function updateMask(param1:PixsMask) : PixsMask
        {
            param1.updatePos();
            return param1;
        }// end function

        public function addMask(param1:ShadowAreaInfo) : PixsMask
        {
            var _loc_2:* = this._map.getMask(param1.x, param1.y) as PixsMask;
            if (_loc_2 == null)
            {
                _loc_2 = PixsMask.CreatePixsMask(param1.x, param1.y, param1.width, param1.heiht, param1.picName, param1.isOverEffect);
                this._map.addMask(param1.x, param1.y, _loc_2);
            }
            this.updateMask(_loc_2);
            layer.addChild(_loc_2);
            return _loc_2;
        }// end function

        public function removeMask(param1:int, param2:int) : void
        {
            var _loc_3:* = this._map.removeMask(param1, param2);
            if (_loc_3)
            {
                _loc_3.dispose();
            }
            return;
        }// end function

        public function addToStage(param1:PixsMask) : void
        {
            layer.addChild(param1);
            return;
        }// end function

        override public function removeAll() : void
        {
            this._map.removeAll();
            return;
        }// end function

        override public function updateEntity() : void
        {
            var _loc_2:PixsMask = null;
            var _loc_3:ShadowAreaInfo = null;
            var _loc_1:* = Game.sceneInfo.shadowAreaInfos;
            if (_loc_1.length < 1)
            {
                return;
            }
            for each (_loc_3 in _loc_1)
            {
                
                if (SceneRange.isInEffectRange(_loc_3.x, _loc_3.y) || SceneRange.isInEffectRange(_loc_3.x + 300, _loc_3.y + 300) || SceneRange.isInEffectRange(_loc_3.x - 300, _loc_3.y + 300) || SceneRange.isInEffectRange(_loc_3.x - 300, _loc_3.y - 300) || SceneRange.isInEffectRange(_loc_3.x + 300, _loc_3.y - 300))
                {
                    _loc_2 = this._map.getMask(_loc_3.x, _loc_3.y);
                    if (_loc_2 == null)
                    {
                        _loc_2 = this.addMask(_loc_3);
                    }
                    else if (_loc_2.parent == null)
                    {
                        this.addToStage(_loc_2);
                    }
                    continue;
                }
                this.removeMask(_loc_3.x, _loc_3.y);
            }
            return;
        }// end function

    }
}
